function [d,L] = add_gptoolbox_tab_completion()
  % d = add_gptoolbox_tab_completion()
  %
  % Outputs:
  %   d  return value of tabcomplete after all have been added
  %   L  list of files and arguements added to tabcompletion
  %

  L = { ...
    {'bwmesh','dir file'}, ...
    {'cache_test','dir file'}, ...
    {'cage2tet','dir file'}, ...
    {'catOBJs','dir file'}, ...
    {'clean_tetgen_mesh','dir file'}, ...
    {'create_irregular_grid_with_min_angle','dir file'}, ...
    {'depends','dir file'}, ...
    {'eat_comments','dir file'}, ...
    {'execute_triangle','dir file'}, ...
    {'imdir','dir'}, ...
    {'interactive_fit','dir file'}, ...
    {'loadBundle','dir file'}, ...
    {'load_mesh','dir file'}, ...
    {'msm_to_hb','dir file'}, ...
    {'myaa','dir file'}, ...
    {'png2mesh','dir file'}, ...
    {'png2objandtga','dir file'}, ...
    {'png2poly','dir file'}, ...
    {'poly2mesh','dir file'}, ...
    {'read3DS','dir file'}, ...
    {'readBDLMeshChunk','dir file'}, ...
    {'readBF','dir file'}, ...
    {'readDMAT','dir file'}, ...
    {'readEDGE','dir file'}, ...
    {'readELE','dir file'}, ...
    {'readFACE','dir file'}, ...
    {'readMESH','dir file'}, ...
    {'readNEIGH','dir file'}, ...
    {'readNODE','dir file'}, ...
    {'readOBJ','dir file'}, ...
    {'readOBJfast','dir file'}, ...
    {'readOFF','dir file'}, ...
    {'readPLY','dir file'}, ...
    {'readPOLY_pyramid','dir file'}, ...
    {'readPOLY_triangle','dir file'}, ...
    {'readSTL','dir file'}, ...
    {'readSVG','dir file'}, ...
    {'readTGF','dir file'}, ...
    {'readWRL','dir file'}, ...
    {'read_mesh_from_xml','dir file'}, ...
    {'rescaleOFF','dir file'}, ...
    {'tempprefix','dir file'}, ...
    {'tetgen','dir file'}, ...
    {'tri2tet','dir file'}, ...
    {'tri2tgf','dir file'}, ...
    {'triangle','dir file'}, ...
    {'union2tet','dir file'}, ...
    {'unique_images','dir'}, ...
    {'writeBDL','dir file'}, ...
    {'writeDAE','dir file'}, ...
    {'write3DS','dir file'}, ...
    {'writeDMAT','dir file'}, ...
    {'writeELE','dir file'}, ...
    {'writeMESH','dir file'}, ...
    {'writeNODE','dir file'}, ...
    {'writeOBJ','dir file'}, ...
    {'writeOFF','dir file'}, ...
    {'writePLY','dir file'}, ...
    {'writePOLY_pyramid','dir file'}, ...
    {'writePOLY_tetgen','dir file'}, ...
    {'writePOLY_triangle','dir file'}, ...
    {'writeSTL','dir file'}, ...
    {'writeTGF','dir file'}, ...
    ... % Add new files above this comment
    };
  cellfun(@(x) tabcomplete(x{1},x{2}),L,'UniformOutput',false);
  d = tabcomplete;
  warning('You must restart MATLAB for new tab-completions to take effect');
end
